<!DOCTYPE html>
<html lang="zh-cn" color-mode="light">

  <head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1" />
  <meta name="keywords" content="" />
  <meta name="author" content="郁涛丶" />
  <meta name="description" content="" />
  
  
  <title>
    
      Windows Program Learn_0x1 
      
      
      |
    
     郁涛丶&#39;s Blog
  </title>

  
    <link rel="apple-touch-icon" href="/images/favicon.png">
    <link rel="icon" href="/images/favicon.png">
  

  <!-- Raleway-Font -->
  <link href="https://fonts.googleapis.com/css?family=Raleway&display=swap" rel="stylesheet">

  <!-- hexo site css -->
  
<link rel="stylesheet" href="/css/color-scheme.css">
<link rel="stylesheet" href="/css/base.css">
<link rel="stylesheet" href="//at.alicdn.com/t/font_1886449_67xjft27j1l.css">
<link rel="stylesheet" href="/css/github-markdown.css">
<link rel="stylesheet" href="/css/highlight.css">
<link rel="stylesheet" href="/css/comments.css">

  <!-- 代码块风格 -->
  
    
<link rel="stylesheet" href="/css/figcaption/mac-block.css">

  

  <!-- jquery3.3.1 -->
  
    <script defer type="text/javascript" src="/plugins/jquery.min.js"></script>
  

  <!-- fancybox -->
  
    <link href="/plugins/jquery.fancybox.min.css" rel="stylesheet">
    <script defer type="text/javascript" src="/plugins/jquery.fancybox.min.js"></script>
  
  
<script src="/js/fancybox.js"></script>


  

  <script>
    var html = document.documentElement
    const colorMode = localStorage.getItem('color-mode')
    if (colorMode) {
      document.documentElement.setAttribute('color-mode', colorMode)
    }
  </script>
<!-- hexo injector head_end start -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/katex.min.css">

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/hexo-math@4.0.0/dist/style.css">
<!-- hexo injector head_end end --><meta name="generator" content="Hexo 5.4.0"><link rel="alternate" href="/atom.xml" title="郁涛丶's Blog" type="application/atom+xml">
</head>


  <body>
    <div id="app">
      <div class="header">
  <div class="avatar">
    <a href="/">
      <!-- 头像取消懒加载，添加no-lazy -->
      
        <img src="/images/avatar.png" alt="">
      
    </a>
    <div class="nickname"><a href="/">Ghostasky</a></div>
  </div>
  <div class="navbar">
    <ul>
      
        <li class="nav-item" data-path="/">
          <a href="/">Home</a>
        </li>
      
        <li class="nav-item" data-path="/archives/">
          <a href="/archives/">Archives</a>
        </li>
      
        <li class="nav-item" data-path="/categories/">
          <a href="/categories/">Categories</a>
        </li>
      
        <li class="nav-item" data-path="/tags/">
          <a href="/tags/">Tags</a>
        </li>
      
        <li class="nav-item" data-path="/about/">
          <a href="/about/">About</a>
        </li>
      
    </ul>
  </div>
</div>


<script src="/js/activeNav.js"></script>



      <div class="flex-container">
        <!-- 文章详情页，展示文章具体内容，url形式：https://yoursite/文章标题/ -->
<!-- 同时为「标签tag」，「朋友friend」，「分类categories」，「关于about」页面的承载页面，具体展示取决于page.type -->


    <!-- LaTex Display -->

  
    <script async type="text/javascript" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml.js"></script>
  
  <script>
    MathJax = {
      tex: {
        inlineMath: [['$', '$'], ['\\(', '\\)']]
      }
    }
  </script>


        
            
                <!-- clipboard -->

  
    <script async type="text/javascript" src="/plugins/clipboard.min.js"></script>
  
  
<script src="/js/codeCopy.js"></script>



                    
                        
                                
                                        
                                                
                                                        
                                                            <!-- 文章内容页 url形式：https://yoursite/文章标题/ -->
                                                            <div class="container post-details" id="post-details">
                                                                <div class="post-content">
                                                                    <div class="post-title">
                                                                        Windows Program Learn_0x1
                                                                    </div>
                                                                    <div class="post-attach">
                                                                        <span class="post-pubtime">
        <i class="iconfont icon-updatetime" title="Update time"></i>
        2022-09-21
      </span>

                                                                        <span class="post-pubtime"> 本文共11字 </span>

                                                                        <span class="post-pubtime">
        大约需要1min
      </span>

                                                                        
                                                                                    <span class="post-categories">
        <i class="iconfont icon-bookmark" title="Categories"></i>
        
        <span class="span--category">
          <a href="/categories/Technology/" title="Technology">
            <b>#</b> Technology
          </a>
        </span>
                                                                                    
                                                                                        </span>
                                                                                        
                                                                            <span class="post-tags">
        <i class="iconfont icon-tags" title="Tags"></i>
        
        <span class="span--tag">
          <a href="/tags/Win32/" title="Win32">
            <b>#</b> Win32
          </a>
        </span>
                                                                            
                                                                                </span>
                                                                                
                                                                    </div>
                                                                    <div class="markdown-body">
                                                                        <div class="hbe hbe-container" id="hexo-blog-encrypt" data-wpm="哥,别试了" data-whm="抱歉, 这个文章不能被校验, 不过您还是能看看解密后的内容.">
  <script id="hbeData" type="hbeData" data-hmacdigest="fd01852e2202efeb1aef3856168e5b969103cc2944867f295316a583350ab2c6">994f9c06d970fb4aead1c76eb2a7916ef4db5aadaf7c5969188681a8504f5f2a62a7ba058aaea116674768e7f44ee156baa95347032c6d34022a6a8b4cd39cdbafcfc8f2e0d4ccd8d0628758012e99647fbe12f2e8569b966c7bb36b4d1e8d1192587f7637ba6cee06a0e4e6f4875beb2c700390b0a6f22c755fd06b3f6d4d6d8b7de4b41e4a9858a41b9e5eb3e62731a3e00e0b7564242046cc8ff0f1b73235dab9891265b4e01bdc57faea4fdb6fb418f16ef68345ad3aef5c5995d2b3600675d92271c6881d1418530fb2c585b4bb6f05d561f971194e27b56a846409f773e01137b2326296f4d57408d3946536905c6ce8b817653ae85b1dacbdc983aa203e37dc335ac32dfd7fa1826cc596290fb0fa8b73c26a9c80f1acbf13f47d439fb01b121aece641c64d3f9a1146f054165a7d2471d2c2dbbf3dfa42f30978305c406b882ba9dccc412625b6de17c3f776eb5428a7126e30e68de5553b1f5193a9d26ddb5f208e42fb1fbfe5f3bb4a06711b87395ccb45c903cabd16415da4289a37b2ceef4b88bf233a3ae005153112b99f2e0c6df5ed968e740f53fbce96d979f621f386e9ecd6ac6bcc3931f91bc2b50203547c39db85d219169c6421978e112ae86bcf7edf710d783e0f0cc35d580c4c8061313ddb4c3b0d9a6abfc5b56251398659f42e010c6b75cf3ad6f3042c0a9537fdb9b02bf6bd0fda5241e1dd919bff70c7e6616542f3863ed5b0254aa23139aff1127e9c891681f2935f58ce11545d074eb7dd44632a41bd6a770573b8a6e611dc0fc5d10f7cb5ac98aadd3e04f50705b4ba67b23683b24a444d55b9fc9f5d34cd66ec84d7501beff2b42be91b3724c0f919f1bf3762a36a28bdf9e4182284285364d5872abce5f326ca3a679cbe9496824470daf0f5b20057438e8f372d7fc998b0c84aff43e78c7eb6df39128c79ed91b7dd03ce60280a90c4cc5d6cb425502ced0c138eeb56b8a4e7613ce0ce7ba8f170ef1e7381a7d4f27b0aac831afe108656672272357b1e89db696718ff97106096a87e54b8d4dd86f3627cdc7814be74078747c1d4a0ce148d800f9950ddec26ddec72f01efdffc3609bc0cf8a3434302211caaf35f22e4b9e95859dd6051779e46e9cba404ed4b7b3c4a1b0108471abd934141b9fc4a475395b584dd665460181e8367d1d26f5a4fe171777d99104fee57f1a490b06f96cb478c09f92b31dfaae29ea9a351472c603c634497d8b8308cce66b8aa70879a9b75db99ea6adb89b6dd6848fc2251479666f08e24a3226f05b0ebfa35e0b651228c2aee953456610731cc62dff07a3e84992e294ff27d010879b454259b6e04279dd65b751c9f97b74b591155a5556dd3335b7d7897246de198e8e7fae2052e0cd8767ab6613bb9c1936d331634aef5138404471eaa19e9c82873ebf9aac17645990b10db33b43d160f8c9c6a44d88d17bc69489530bae7da743842add9b66aa28477d76d27fafd83fa3792aec70034d4c3487a969b7715b49aab9fd8320eaf955d2a4f7e36f19905e3e899a3262b31440d24c61dca1eae1d696b639a7770ff6bb53b3f62ab2d296ab006dbed55dfa301b5882b18e2aa78daf83a657af89d11b282c9f0cff3a3749e6a585f5043b9e2a08dc93db7ec047cc3259ae89ab17f4b828589ccf731e68d7291bdb5e6a3771d08129c39a1cfdb84e1cec2a087d55aa646d07a1178a5e9a4a289c664ff784cd06a910abe60f4727b3b7d15d37d44380940b621610c43d22f2904e80dbfc3a15de74685e874b8e4cf540ddfddc8fd346139d41729d412d5a61ec98102726f972332979ee79ac3ac216e18c716f0f6b3c5b5fd638da945ffaaf2472fe9d682b2afd73d0d0b2f70c4615a7d32fece3befa1012b7a10c7b0ad64686c2c1d5b2ec3d27aa254e8f7e9318d0cf77b4f151d64da02d05fd7179e6774c1c1bb59d9a7dd1bcf85e03c1f471e1f6b6ec8289897ed05d8b2fdd90316022fafe55b7868effb912886cff0d72431397e2c24d0a16388bcdd32147bc47241832bfab6bfc4d4905456e5f12ad394837a1a1de69ad3e3223b9d66cefb5eb93ac109357d34a2d526f18046fd41626c897764dde4becd0a9252dc0b4e3aec298c44706bd1bc09e514cc43ac26bbafd6910c7827f265362aae04ec92c13fd95417e515c1642c1f3f13da0b3e7d284917c4631209786be4946824da56d34ec3dc2a51acaf5de4702b8df7865796606c247a63f57e36de5eafb3a4c68900fdd6af1dfdd78c7c3fc44382ddba10d0bdc0aa376773d4ad7be285d99b0f8a487d537a717e0da043b4a077bf2309c3811563fa5ad2d84f5a84ee85b7c51e387a35a3c48b6f14618a0551fcd418cb5eab2eb9c9c3a4c8ddd687ebe9a1140f80e121e1db1246a78fcd342dab52024a0a5a5e135a1a4925eeec0291820154e09669107d8c41d15f7869804b8d62ded91615d3b2a98e6598bb976651672ca495a84a2d7fc00539805d14496d7c18d2d631c05fb5ba2c49c64efed7ffcb7ca7fddd575c188279c3765ab37563b287c7fb6864a5d3a36952912973dc67d483642bea7eb860a45d942807e471e7f7f7db040d786aead723ce4ce2da044dc79fb7c30fb642483835a15b26d92628206ac2bc8a9344fb45997b2184acfbc20a7fdc18b2c8b14477764b158a763f1ee5c03c82b4cb8b9e120f1a95bedcf316a105530447e82ae75ad9e4b030feebdc2abe22ee7c48d35c22c907ab751a0cd2f5998d985fed3be741719a96e1912218772fe9e233e378a9d874be20c61d863d19e969370734538a2a41704e76e3978eb82430e00ce6dcbc101416159d3dc7ec7d6133e9ddad07ab764a71717bbdc27419e225c4da46e835147bb8d08053e93cea838ab434d8ea8293490f89d8b522768747edeac163e74ca59f1619fa0b3e7767968edf5cb51405647186b5966a04551df79a0428cb15da7be4bd307c682a48ae084c06d330d1f4f5b61c604bf3f30f9aa7b68c1e96421d8b12244579892ba4c35bc3199a72d374fcd6f1859d56a4b816f2c4f46c7f99fa2c99ae0dc505cfd22cfb25163b4e27e68bc3708bc5371c0a6de499431634e408488c360ef855072be69a7f211b9fd8661a03a4273c0d9d4b611b83f2926f9e0737c7dc406636662389998bec43e9ab3773fcd392716a15b47736aacc1115600b496f5a6590ed51bc3fad0c5ba5a5bb3c680d428a44940b5dd2c069a0c45fc8061139d37f8c8fcd0d12ba82776ad358cedb454c9c18bfd8f8a13156e0a74613ccd67ad2b0d959e8373cdab4109679d9741b99bef6facb9192e01a9e4b67ee1515fb29c84b90a5c16e9024b82a84e297ed21b3dc21167b68ce8d0374426fe8fc44cf4a820e10288b11b44d44a53994edfd314d701813af4fbb7b5fdb5ce66e1bc1178e1e6c874740adf103153ca53de813e305b845f974341f817d0efbb82f7807c6dca091fe3d6aa8d18c532883c1b675e0f7fa91ba9c7203b257124fb3391867d8ffa23167e22af6b1e6148fa0f58475b9f62a6aeda21510043b3106d694f6e9fee211c541d63ee105173ea1e8722af89d61f197b1bc328eb11e5e40fcb66690dca1398c3f672b891463f4a4d356ea879f23c13387094e19b5a89fb19243c58f0cc056555a6325f1967bb6a67589e0284303f160df8c79306063c707f6301af9b2d99a7dcdaf70747d87ecbefe5181bc45ad88d6b42a73e4db9be2f690adb38336351bb89da080507873a62de3fda7915e88a886f6377dbdf1ad2d47ef8a42b520938c2173a79a8c9b54c5781c95577121180b8522e724e68bce1f998716205c63c4e3e47a13b176fcd741e5abc926642ae7f465d3cbd278bddccf8e94de1e0bd39cf8dd2045f6351d5d9badb71a81be78347d3590068e420f534c52985ef892a9b9b96c53a12aeb71b5098cd3209f0fd6c597f4f0467576ba3aed359d5e68b0b5282eb344feb3af4e8dc67525f9e3fc12673f7a58191de3e31332b9f6d2c4aacd0e3a2c40b14f52c3da26cd24b066cb4fd9daf050c068f4f929cd8c660397d9e6468b4371263b2dca518c6d58bda691f69d3df05a4bb7bfb72571ab02cf0bcaef2131ab07da2b649cbe57744670cae83c519e4de00365943bafa8d5a6fc3dee1849caa6d38054a1caeef8b253914f6b9e84b71a9acbc1f86f52e285411bb6ecb028d5dbde0ed2b080a18c1bf4b9f04b14572f7d670654b7a04aefa986514f177d96c67856825ca4372b6e28b2d892008a33e504e0b89907fd8b01bf4576d6c94c0eca06f752f1e668149aa593e0a526be5dc7e1a03b6aa1e5fb85e7d7681f3e3eabc7f2a0c0c2fd3c73692f70002a49a8124ca33f43dbcc038b26ed7a41ea79d9969d40a8f79cda4bab7c49015d008256b11e84a06d013aa45bc2ca3a03e86903fcf700cc6e5b20b277b61b1ea318a87490aecf3b52bd56f786834b6becc55bde8904e478c23e455535f50ff9a2e9c588afc79a9cfd6e5e4b95f57fb2bebfbde5a727bc599febbd2437c2259337de7cbf1e1bf1ea9efbe2605f83e1b092bebef0248a8084c21ebf4163e71725ebdcd7bd7e4a1a08299591781d7383fbf2b3d974077991cf29dfe112e54af33ae68ddb6bbaa79b42209218e2334b9536021f5a257f3c99a7bd0ecc241d96888414f5a5449f68f786a041829c313ddcdc570763776149bf8429947f8e7db0bf0b1f74e83abf9e5bc256b3ecd796341b513bff8a8bb3d3498247752d6080abc01d5a79731146118a2c96215019cbaa1335d96ea2215c0471cf16a9671cec765a1550bb7edf57a70270773da810778d1ed929f7ff9e2030fe7cf0345ca1754016ffda5b13253c20ac2598ea0800fd2fc8e68f884faad85d4992b053f4abbc4ab75cd05c77cedba7171be4407c01fe17e08334608c9208a3e1b6cef8519e11e4a44dbec79050c86b98f3fcb157e5369e26b91f431eac3dab14a25742e8eec2cce3bfa73cf2da83eac4ec54a3f67864eea30c59f570f07e9be2bd7892601870fe1b2c01f063ad4cf2dd18b43d6290e7de8c886623b243266c8ae14fbe984fdb1e6d9896f5a7ae05db2459d3218ed8e5b1d39954c324ab5122328a338c83887a4ba1ab597e97d98c1c0477d5c8bf9cf77d012fd68e34e0dc155f9bcec7de518addb272c311b5d939861f45da0e7841c0b024e4cb4c69d9f0304bee8752c339d945c154ac3b094b9f3e9e03613f514b94e05b59756e95522a9d329b5a2bab91cb363e304505c1e1916bb75d010dcefa24c79e7b1b946a33bde200480ef6ceac9c4d404633642849e55ace900674adeb98b0862f26f58eddf5f59448e48c30398fe9402a0b886a27eef8d4c945e6b71b1e4bef3f3b453bcb67b8d29add329d3714723939675e802b59620c8b2e62df2120c236729c018cdc6512d27de2169896f078700cc7319cc40d08e58deb9e37913c7dd89f3a4eb83bd2c7f142389e7fab6b281b1b6107f4a42d4cc7b10706a6503c39b4543139628227632f2d16f4f7adfaae8d37c922f0e372eca1128580b446d2847dfdd462df906c7379d71edeac8c7df3af187e663bab2f45ba30d39b8e597af508b7048404b8e94ed5ae5774dc6180a6bebc65ba13cb64e31ec1f729207aeea6a8102d038aa3d84fa62ce50e2cea13df6db0777ca3d0632ba8a0012c99a38b79ae4edc51a66c29452de5def13331f106ff3b5ed6e1e4c7cdc22023cd7e5e588511f2c57009db8bfb970eccae9e7be5e994344289bb8a68589d8f8499de42269cf24d9987b4ff2881032bbebfca78d4e1e005477b21a35648a81ecaf992905ee47977c9f130a6706b9dd62d45c3db435d38af27dd35ecf6d788786f2dce7e1eeec82e3ae3ce830d1e725f0df5f4da15bb8c5e74af5d3049254bb61618ccaf79377ebe4ad5328e1ce08310d2d95ecd3c0241c3a34683e21f45e8d8f927afbd3b5fab9d01c768db25a35205684f3b8ead7bbe909991871ab413e14bd10132514f2a3698d8f4c41db84cc2f9789976f4e90c988f51cabcd53bff821595897e09fb62aa39fb8f2af9c547cf11c0b9e600e8eb701debbb8aa406c2e864a2509db5017d74c5c14de423cc75cc958ce8227f79e6c05725b872227c8ec6fc04f7bab3b6510199f19e9584f215cc611cebfc40111235396f35b0023694e89c20fc3be5be294fe4f3af35cb9c7bc37411d24e423dc1b534f38258eb7b0220b28de1e3ba4286ab5f9bfe8911cc47e6dbe0e8a6d1ba45886ec843bfe35b32247d4c4844a7c5ba712217e26bf40b3ae172c28be4b87145ca236e055098b1d5fc5501ce8f12a9a5361f12f9a577d52aa60df902c728037cdec62eaa60d33159561fbb669f5fd614b75d72bde2d64b412b926b62f4e8cc981e984db31c5e4f588bebba90555cd9152a3d64600c86f0f833f5f220bed8c324ba516512da251bacce3104cf2ac03c28d86ad495be58970cced06fef73dfa8948d14c2cbdf033c257af8034759663398f9e9c508efc96d45e05606e033de872ae3db6335bb3d42b5b5aefaf7abe5c2fa22beea00fe32a57eb6c0c60296e1b45460e11b52d657331fa6a0d5839033d33391280e95f685145ba8bfb0b643672b50b48e1dff67bb5d2ccbbff2d27c568e8864e32e1877d28f93f7c056b8f24d1433d993066298cca2527b17e7ddfb2cb79e45735c8c0921a3c4267f4a6d6cbdf179d31327386be7e4cc11045f9e4e50062c3928166fd245fdd04b5c3321e00746c9f8288f9870145f7ec4c5a42ccec53c16bbfffe3199200067baa864905df131cd7fa5dab14f0febec243f752fded0cbab0411aec2983cd05dd1c5f06c189d56751b20e1b15449b4fb683b5b5d2c392ca5f14b83966cd8d7c1f38aeb708221c4131389f19c299e6eeb9c7345b605e13fe1e2744e91405e457ff04f649ffdeae0f8d495e0769c2885a7d65c1c6d7fde4dddfd216ecff02f1824db2ebd76da1b4192578dd5dda55aa8cc0ef3f769bf94ada32b9a823b59f657fe3170e1042d3a919bdd8e69d9ef31d258fac0cf05e196b1dce53f3eea5c6aab31f7f384cf3f213852d3732004f2ba9960864caf69ece5a1eab1b5dfe5444df3a7b29baa562030cc27a8a33e37ccb5d527f0a7b8f00ca7abee744186da943f688c13b63d95e5a247e18c41054e1b493a3627b6d224f05e60ed48b8fd625f291f209af08d82b5d1ba2abc21f4663d4215cbf1e0bb33815f44ccd2192eba555f802c5193b7472dda3e2dff2212f1378879bd8dbc954e12e185c0c084202aba2775b5b4afe9b4a1bd346d3a627e5d6ca64f3c329fed289667f5efbf4519030b41c9d6923b50742535784ed633ae27e64f82b0e3374496023b61bd99292f6bce92481645736a2d12d73f173a5c8e94298c40a1e541b3ad46b987e91f97b7c778fc307ed56a5922e6ceb6375823552d53e478d919f6eda0a8fc0bce440428bf58aeb30a2fd8e20ddced1dda217461493d1dde7b86001d9e087430de483cdb490223c271c783cb95e4ab4bbc0504f8db6fc3b5cb860d3e2c8592c6b9ba0dc0ba99e78160d0ab03760f7c62145f489a4ad8469ea63771003cc6b7117ae2ffa8e451e264933cc6fb3493d7febc96e6c8b3b0a198637de36eff4941ba9abb5336c4f023348855499eb3f69ed6dbc082e74f1f44fa5ed8d802de7009abf60035b8ed7f7f6f7a6277c411ebbe04afc177aea5ec77845b5ae1f484b68d69fd0690664878bb9e783dbf070394493985056fe063dcf365a4d2b89e2089ba843857e25f55f4773870063a1d7e22f47c8451b5e9b753345c08b5fc25f4293b6ffae93dffd6ec8161e2d6cd06432070ff6c668e2341234860932e06ba917a71761b7e453ef5813e6807acd2ccddcb214845acf368dc6755be81d74988533060a30c87c74f2123778dc1af1a24bbb3cd744e7239b44475c9a5368e9fb3220b9a5a5f0e9e9e98148c8eaef2370f84eb5807ee19a9560c801a93e5edf29eae8838703e200a96cdfc2ea5ffc88d33682d80755d522e87fe205eca2f0031ec64ff2b0499109f90ad0ff58b129c530c807625b95c8e1c4963daba0c3462df17163368587bbf2816df3332d4aec3d89305be310d4c1e406f94abafaf3e8cac0d4736fed81c776c0f1aa5c20dd43ef8782d1258012114a8c98826fd1c4ea5b9c0583d2c3fe3558f46b511ac27a2fac75a0522f750b8afe5fbab93eb4249ae8a7a5aec87157499d9dac56c7a081b52b76d661cdee3585205e2b17bd593234187b7e706b3c4284922d5590c3692b03b837557dbb993666115f99411d1231abd458d6ecc50c82c87640b201050ed646377e033e07ebf3cf8503a3fccc28c747c1828992dde43325d60009cd0fbd225c9214da41a998b695a45443b5d340b617191bcea80d38466e54dc712c6ba2ba05b010032fc821d92dd3a83b39cc4835678c8561d2ef8515b3badb72ccec30ad71114f79cfcb4f2cecc158c629bb263b9c56ba6d2269174f9c59d89c13b1887b882295623e1af1b13cb861093d2e357f72b505b44e276e7366a9792ad54ca2b891ce0bdaa0fb0b59b4baf55b4b11811c2d9ff9c6f5aceac77adec02191a7cb8ec1084e8602a0973ba6bd615e0deda278b5209a903566d47765be353a0a31f82475b824c5e3bb154c4b065262e3039929e3ff6afe6775269fe9f34508a6588827e7cb971f6d81387eee02b5ff3b4cc49dbbc627e02aa782370f45188638df928eb76012c080cff53de43d50b75a5395420500797250661761a1cef6394862e822490528b166c4ba2af60e473ad1072e02da497a35f9a232196fc926bd74ea9553ff01271c367ddb44de513bfa84ee3313a17907234199b89712043f1621d20f5f3182debfb9450821f09ccbcec35f1ffd268f6534f33b216006315fc8f0092536b860ac279153280062fa292009565f9f864a70e8f0e7cce32bb77404363d7ecb6a033fb4e7a2726e5d3f6fc014930239d80f6fa3a07b3b9ea199b963eddc12c073e284b22ed6bd306eed3e33decab55a3065c6c20b23b66ace6ae2ccda6ce025408bdea4fc1c9114fc763beb93bb0e23ac71a3c1471584e4952b42b90676571d72215002e7556d403a2add873170527b51c4864fd0f49161df104dbbbba57c0fc06ef4043ec57d9c5474673c264333cfc9f92f9d793b8e728968412d08d0541cbf4bda49b92c069761bee1ee85cd4b0bd936b2d4494a053234675371ffdcbc341202a7b4480399634f89a7650901b17e47d4a9869aafec133cbaeb6eecc0d0e18d04594fd9a2407c4982ee1d703138d3855c64043fc84891e93cafb35f805b09dd873c8165422199549ce73e4df2c9d479debf67d983d1c430b12f003579a088bf50fa31da8b9b87fedb4aa549756a1142ee6fe2e2d687ddfff75f2895d783f90001bb3d9ef7da638372e02832df57cca3ce64d7f72a01d0f9016c99d09d513e0586f1ab786d253e491794c8107fd5fb421574ea0c90eb3d4f28422e2329004e4d90e1258478a4916744c1be08445c2e0d25774a2613f1706f1b14b9a18823c5ffd6ec72a073d215f14cc35f1ad1673fca7a8cf8014b849082a0c51b2a75ddcf73c8644cc9add0a0dd5e6f96ef36d88caef7f16bb77ad352c31a2e7e6aec6698d5c89e296731fc7b045ef34ce0807297391109bb32c96f5cffee9041ca5a54b0a2f1024c75a4b66f30c48b9065faa6370c90fa0c581af348fd393a817acafdbe08e0cd90eee171eb7ab4c747fe1a9ac5c483955266a41d300a62ec562d49ae80b0885f640c105e863b55a2aeafaaae56aef5e3bb102196220143aeb50e5d317e2d7ece88d25b57e0e37f1d4e6f2c78cea5a1c1b939d356ca0b6f51b56406f789b61f0843ba10b702990c0c6764cbe42cb1e72af59c263331edc9bce42ace44f71fc628ead7e6bf5fee480b82c081d2fe0d95e4923466403e9f717335fe61670f8349baadfab57365827bea16bbef7a2b87bc8dfdfd29e58c25fa7da9debc43fab8244b4e26ee39a4ae45025ea2266be66eb300fb7f356c3180ac17788f274e62cda23297f4ebe254abacd4605eb2041ce7779bb12addb60f3ff5de83129838d511d13c3fb0181a676b62099e0ac294618e9fe33b0f868415bbb8add0c0acb9fe4f7b10dbd4c8d6b37e058a9e337f5f699c671bfccee951cfc4c4d0f94d36513df75b3095e1ef0482020f4a5a5af40e4e7f2810629bcebb5d031ab67dbe1a56dfab22defda7516e5adf783a6f0e87df4e7cc5734024a269ecf165f5b1ce785ff21a478515849b29291af7faeb9087dfdfd982829f88f55423c551e4726ecbcc1ba925876db585b3c1b27cdac28a4917b80d191b393bf385e88eb080a6166b0b88fdbc5434ea66eb58078d0711239fa8211a2ff3b883764caff505d662e7356a11483d9375dfafb2631bbf14494edb95aad0775c31c88a4d3471b43a9025911c33eb657d7ceeda763d873d7b307c68f57f9ca779c6818424e5c6ae28a75e20550c60b0847595bbc3ec2e9fdafa6c4b77f9bbd1260e93861742d1a7ca7f5c3dd8c02c76e954da2925de58b521d678f091ecdb10fb9f54419f2cc3751f20e83c7899ac31b5db97a047d1bb521b794ad5c184eb8868678ebd9da5f5524b0d977579cb6788af80eeff0d4157a502491640e38bce0af700eac866d560c18b1a163a4a3dbca210ac57696d23a1979d2684fbbf888208468637d03b287d4f31acc7ad74e80110100a36a62a4c4d0daac2c8ff652a005805a2896c98ec32d66feb42ec35833594c2b40f2cee3df15eabfdea3b54086ac3430d5fcfa33c75fc7f5649f763abf61044be5269995b457e1d40db014ac32b20c1c53ed57ec4c531db10f8dcff66d1a83b8062a2d79bc0c9fd147cc6e3e7fb0202e3da70ed90cf02db4bb160dd0350b46baf2b7541c2b3465af89944c355129a3405b6317fc5a0e5f037825fda211ac506a57c1a9c8f72d723c784f7f304d9fd103121c5939c61ea89117f05c97d9f2f47c8bfe12f85965ea7629f568c0b0fb0b81a2e136adda749ed55f8f92a381d0003a3e24dcc1ebb59007fb026236770dfc7281741f5f64c2fe65831e987dde27144848a2d5186989a378aefab26228b6236e3dbc287354ed186bd1c9825e83c29e41bd2f8051b5c0bd2137e6aa8581384cb3e00702c7f2a725197fcfb04a9dde0443ae96375b4f7935cddb4e0ad14c512256bf3afc0f8ed326281daad47a58738ccc6aca6346e159cf41b4c4da0bcd4e00bfde292c6c6b76e9c29a6f3ced6a782ca519728fce9f63258e045d0117f549a7ad8b291e4f989b97dbc1e47a5ebe2743028e61241dc2f1942215224181ce6159e96cc814b2a564ab661adadc4ba0859fe22fd9e98997ddf4119e4cb8d82c58c2e149febfc82f1aba404f8ddbda21b7afd3b7729a726f37230e2e6084a249e7ccca955590ccdd4e55d549ebe542c2f85d74da84d762e6b9e839e9e9a9b3bcbe4fde91b57b79c93e7337e316ba44aaef84ace65351c8ea9e84c3b2e8f80152f8d9639ef47854540b3a0ae8c2ed5bafed397ec7afe8c5d75f5b790c050f96fda7773e07a5b2dd0d3c704810f4818dafccf5175562834951294cfd841da67914f2436ef187aeb01109960fcbff8a519a9775fed50ff02da9a6c7d5aae0f00cf38ec2fdf52e16d7bc382098bec79d00aa5b12b85bfbcc151db2303ba2fe57a077c0b087ac291373a97618e64530719c253d7064e8d6ba6c9781a469c32d8367816b5a00c2a656bb599fa2cf189087fa00cc60cf913305e3436e4fad91e98751c38f0a4f3c109b0c57cf269335c713bbf5eef0c21b791bee6a362bffb7d1585a2f5ca18c24c59a4cd0d8a36ee9dcdc740aaebd4b82e1ee5635d6aff07858fb0d103115feff5c1062a3b5d2bcc3676518f95edfa6b96620e1ac24ff21ec01b3b0badc2aa5df66fb538f9c24ef31a13a7a84c85869b30c86aaacc285612e6cac1f9d75e6a1c0679d1158b28d9443f76e6dd421c3ac157e8a1476faefaa7b7d39814fc496212f9441eac3b76d07ee2224405bb6489924efd27109f95c2ec2a2a1e5895f1134a5184da61678e22cca61dc74107426f4ace6574b90d0efb6e42c2745cc044c7936ff2e4ba86eb95647ca6def5fde012001d3db8c9d028bc2218ce913ffcc414bfad6adc225226a3a31a44a9a98ff619c03f217ad4fde5126a6ab6eff7661f85aa294db3bc7c4da4b095292f35c1808fbf6cc3a9d9f7a1f9cd301ba87cab709b69d52e5d2dcf88b3b3bcd47b46f2a3800b7eaebfe095565cca4b0faf5516e7a8b9bb5eece4ab0a58214d4b9e8baf8b235543a412f2314baa48efb169bb5f19b7e658186ef31b5f2466163d16e20a7c05699448cfc3f19844a3b6f7369028be09b2118149c8cd028c82f46a88d64feb78fb5d7d6eb6c9ae9422372ae37b3d951e89f59242576a3ff5b4cb22fd4e1b436501976f83266d0f67b5735a46d51a2ccb820e63dab2f7415e0aeea066a543b3c84812320d0e35770c4f12633e519d23a72f39a1d1dc2d700bc5285625a11b51c0e24a78829e82ef04a541e3c6b94b96468ccdff5f6ee72893753d84be3b349319f896e2ef0169a67ccbf5f4d18143b4f3a6bd48bcb184afd80e7d2bb412baaf8ab089c502bdbc5de51c2644783bfb6eb7ed81e1c4ce3a18d85990430cbc5ec8b0ca1baa5343ed95f2c1f9a0368df0658f52bb740c99a4f911d413161012d165523ba27f5e1ba40470fada669d60d8f50c6ed886ad76d263eaf24dd7fc7a18759965f3a65ca7c14856d5b3ee088d53e347ad375dc2611fd031c08357a79224a9de9816ee35901247081ef0c4a4b56b1f2fe34c1c3d21ed093103e9c6157ffb535964cbce9e767be3e38709da81af364d81a4412ea2962082bf3050c607e15167dc86022ac67e5bcb47356a62974040f8221ec8319bbe760a927c5355a68e35bc3ddadd6b379f3a8cb0a60b3e3ded195efb4a7a4ee1b26017c32e4bfa9a0aa1afedb8f9891076dbb85d8ef99192645fdf706db7bf29f18b0f49df2b5b9018645454350de98f3137233c38aaf71d4466caf80a7dabd858dcc7a08e2b9b19beaaf35cde0b6fb91f4d85d5c6c3ee8ec9f2afab923cb33d07dbc6c7c32cb82ad8d3dedb96d9901da339cfa192b9c9ab2953dc5753adee43185e045ba52df94c0238e109755c6622137b7074da66f4f6f14898357199dc426ee0b302a1ee3c610d1b0f2c68540dc116f2cb74f5eefc20e1286e83100b131b9146236c460855627e4d9fc81b92eee040acbba9e84a3be8cf21c6cd229871604d0b90fb10e86d6d11d4b725f53c4f581ea562ab57af793ea1e1591fa14afd5a0b47d7b5d6ed146eda747fb037e96a31dfa84b05df2ec08212a5f3156d2f87445bfa21d83938933ad5bafb0d40aed10544eb735259cb99036f7dda046a5a750a8c15df4f48409b0668825d40d1662bcba9f566aa7ed485c42771aad68392955457c4cfd919fd94076faf4f72ff5f24a1ec080e4d6e27a680b8b722e2a8d5fd2f094c7d3333e0c157bfa8df28e46626171ed42a9a0511deb9ae6cdb6fa4a831b2a188623f2222ae145d0f8f0f1aa45a9a4513f23f36103f2791aea4c5a909c3a103facb092a25f81a58b5b8716eab3c0f55d4e1b319a89c7b3ad9af20788b2df2ce46863077c8bbac2001c9fcc01c65e9a4826e4e3fabf4fe1c8b755fef0ad15bdc3e73bb462e6a038565ed4c2bd0b6cc4d792696d53d0bbf6d804f56a2d766d648847f8aa31d916d042c749f987d0dd1d46335dfcb43f73b41af8e85b1fc9c371525115d6f5985fe5cca0f4c0dcb6502e73cbb7b0e598d7cc201c054238e3fb5c7c7aae0d0a9b12bef49d3214503a825a0d34f0cff1cdc5e9fb16b1f0e4ce1bd6cbae614ca95a54d4cccac4b51619a0b88b295a99abaa2ceba124dd6f9e85eb91ddd6f63129f579ddae0d7acd2922364ce71009da694a2f418b18933afccf540d6b736c8db4f163852e7a1697301f5d2e3c5198fc2a913f7918afd84cc27b60ffc3fd37177ddb7bfe705506fa84f8049bcefba74cf298525afbfac21d8a8392c76aed05b80b4e4085dedde1f9322561af0689002c3188230064a68c9664926c0a6c966b2711c64040c64ab20dbda3e9a548a789b79c6a46a6f28c9a1ce8ffa8f2000bee0548ab0ee53fc90cda2080dee30ebbde37b5229ef1f4d3597f165e1fd41added1adb0e6b4f88ac1041ec7cc7e7f581287f3bc5ac7aea774079414e08d5f573a148ea4fee5221d5ddbd455fcc7e7d7d5fd61a53989140872e8f50d9b64a6ae774baac0cfb058ca6d198e3b2884b21ea19bb5b9e7f1989b4839a33e0d92d0769901482fdca42aa6a0e6719f261addce2f176ced9c93a6380632f677c0467f3f4cf8f31ad54b28362a06112e59647c4f36932cbea66e2a53c012e0aba54ed903dafd10de420c4952c4070eea1a0c8d4a0e056104abaf29443f813dfc4a4689419fdf0da27594387a1abef2ec856470a71c50ad426fa8aa43a128655a234f89d3573d68468f79543836a0f69afbaca216e064f87bbb01ad3601b616a41e64ca10a418d064f7df9c2e18a598a0fbfb519f83d6e786bd26dc3d313e636de8835e6d7647ae67e1b18642ed9c3e6bc6b627d8a3484832cebf6a1b9228a2079eb247e0dcf85c89e6e1eb46041f961ccc99840b898480428bfbbff98916eb084298e1d08e22d67a49d19e3fa273622d9a33dfb20fd3216acff4fc344b12ec530d42480c27edccff32866fcd2b372025591bb999ac97da3e81716743c7c207703e5a10f3360af1ca068bae075d82b46955ecfeb81d72c97319d2f583fc5b9f0bbe617dac1e09bd09578dbcc998a793c116a9be873e41078b6481f96de60c409c84f3981446fdcfc5a8f6021428e0411851d922b9ec4630510ad6a975e730847511dc50c48978363a48d897132d602930d9993e8e6b2c074d1404080dc7df8dde84482816490e56f569c216d325a481f95b20572b30742c2d7e745cddd4b445f2c2b4d4b64a09e43be5c1530f7c81cfc49eaa867a300bcab866faef261c72ee72c9f0811c9a816283f147d20d69cf348e9f36808f1cc4dfd45b2dc5657139400c75b2f223c40519a765de38dba46a042fc60fea12b7e5c37105a6f791ef14ac81da2f3c741dec6583884ca9bd4cb5203422e106e6288d5243378d765aa7d84b7784d2e53a182d422bd2807421f8898dc5f081948959cff55ffebd1b78a1aaf342e334ddf12e7f7bacd7a493363f16dbe710de98824ca8be6265baafeab8e1e2ff6b8805295885e9b00289268663d6ff3a8d6ef01fc2c29dc2898ba3a1fab0a9841982c6e765d5b38ec3d9f99071700a2fb6c2dadc131902134cc48b8e048ede8f77b3bfd86886ebaabf0478830613b1fecad9c321dda6c0604a132329b6e9bbfeb08e10f683ac55ea7f5051e72df088de178a4e6129c76cc055b7de2023e54dbaf1b04ffab04229f8d2d2eac2d92ce00567d742490a24fe2c0add411e1309f2e25e1299643aae74d42345c05d67a20c703519cafc660a2d26aef3f643c890d6fbe97dd2ed4e756383e0b1f0f71665d225e646b3d7502216e451636bce50bb9a2a41c575f8f71fefc653ec603d2e8d1a38e8f3874eba27c79cbab0714316d7ff810934fa434524dff6300a8ca6ecd7b9882578f836d8195c92655aa36653856009b9b056f0ca867a47d04d59d8a1b1ee1f0eb19999a50a4658c77db903349c4b8c6d8696cc1e06e76a62747048de910382c2490355ff99d8cba95f3a100ddde09d922db6c9a95449ac8b9b7ba9c74569ade3f691e0fd24f8e3effdec85437d3526ceb13b6a9b36c66c8983a7bcd92eb2916b280b677248a9163be1a2aa5e4793c5b39edca3937ba19735f4de92b5c0ee30cb902ad48827f799a783bab8ba028679df8370fdf85ebd26e0575f7f61b97d4dafa83d25314c72ecd4a21314b06169fc0d4e391f91ea040279592c56870cdd3dd6ac0521a61172df02df746bbc0594fd2d994004348569b3bd77fa08e8ebb66ce70fcc62e63b98c86093f3d2faabdf2b188ee928e2be9196614a13e3c8b7cfb86dea30126fd4374744c965c215aec7f98d707dc57be474d935b88982d04fff35d3c37310cc8ea36776ead3a633fa9f13a552c233a85a5a31d3c0a5f4eae45ae05ddd8bd7528b1f882eb19748181133fefee4cd66b32e00bafd914bb3e16a4e9084e5e1503dc86e744ad0e7804f541e05e6d2457a0c78f6200b26e7ec4c373ef9fc88d4e2f2abff411b3e484560890c2fba3f47e820371d0e476d392ccdb99dc2742c4cfaaea132a694ae6b93656cb069f9d25e431aa6938acd03ea5478159b7be56b4d1183ca2557ed825d7586d049c316ce5423a8a5bbf038957b6a8494154553691cf3cad2917f143a996cafffc900f4a31682dbf19c245c37c703a32f8ce325e011bf7e104d846b8ed99d886b117fcc64d2b5a7a37b5e7f6c3cf92bf8145a6dbd4f5b8be810c99e4e3ed0a0c9abd4db7daae0620e7fa6057cc40f89a062e800edd76738e438cbde9788a9bce6a4cb7e1e399035d573400f736bef0cefa13f8a770f2690ebbda0eb8524ac7ad22a942f9f779badeaae5061547add837a156f6a605af1f213b3b15f7e86fb9caf05da0ed0f92aef81b94fc04d8fb9d2d58c1c08495d4bc37ace61245ae266b66b42d02279bec1f289a51f9ec194a266c10c99b1df5e82318604ba4f420ee50db254027d240965fab5f65d067d9cac4f173037de1ecccca54ddefbecb78209e2831b77dbdd21a3f894dfd4e338acb674a131a4d52d1a8cf58bcd89343bf7ee36f6db44c6e9ba599fc9e1a6b6241709c7ed97384bd2c712ea0c542a6f41627ae50ac0a94675447a981c7157aecbaca7ed8f7756078554b4166555114ca11071cd119f6158a8500c8ab1681b32fc47ff8abbf33d306ba2e37c00ac050caa67403d0d9df28a8a08e1271fb146d0af4d256b2024ca6a0785c887226df02d4c4f9434131c3d8b9f02ada2078340b5ff812d51f0ab198937a53ba3d9f7beecebdd50a3b0cd5a354a4f5156771edb1ed61b1b409a36434970afe4afe3b05a404a4e98146f5733a69c425bfe1e978bcbcf39d82fd1bb123e9341c9c746bad61d337ec7f93d2627b5718c92dad27eb62d5289f9082b6d8f46b6462cd62026ff9575fcaee7b84cb3c9757a5cc620e4612bc66194e6535b39042216fe8fa7885c563f79b462a94e2e6eea1024bf81f8b6c9f08c3a65f04bd51294dc77ad1f2e6df0bbf3c66ebc4dead5d960adfeb10a60858da35670dcc876aa026363792f7ef4a84885dbf0b6ec76a2b2fd50e98361d238919e16a99afa3d9ececd6d0c67f083e947952a04402bcf0a72270562c0fd5dce49f5a97dafbea403c1d59a396d9056021b851fd7bf468f276f3dbc52d11ad09633f14497b3cc2676c6e6c8b17337b1518525fd0de0e6c61270134ba834bfabfc25347890f8494de48612502da236f06c6ad0d3dcb8ba23e01c63c57c5541e06f62309716518e1cba6fdc05bc160d1df318ca7a3f39598e3c2b4acf5a963230ae0fab8bcfce356c57a241e49bbf1c871cc61c4476c15a85a59e71b15d8d06980b035058cabdfbbbca3fe343772fe98e023387afeadfdb1b2bec9bae3c2f0966fd6ee61404d92ee5f4a9c8a48e5c0bd4189d04c2874a449211ae97f9445a509dd82f814b2291100523cae245d15a1e9bdb5c485a43db9ab56c9c718a825b75acebea5904840a7a56dca04e895bfc0135953b4091048e6c92ae4608f0e0266ba6872a4a40b6c548e390a285947ff9d5465692f4694513ac397dd11be0e61398ce8971521c342135ff13826760b31a0326366d28e1858f112a5349ea6d90a28fdeb0a3aeb57618b95b0b027dc904f839bf9528c3311bb0e09d9c9f76664054cd172d000ba0c385dd9be100660a1a4c41bcd271090aeeebe75026ce4587b96a2ecd885d624974924c2ff06b2091c33aba5b51dca9957e73c2e158f694c34642af4cd5634a38f8432302e609e479fd54bc4e1545ff543e2106406b506f49e046463fc89a52e0d0d661fe8c5e112b5ed8f0fa3a9008054178d007f692e2370a71fba21d0ced44e940961135df9b221ba1f9fbc30e2ad41c4f570042f4e673d69ea14524f7e2975745db5b36dbe3ac23f8c26d259931a494318427acb69d09b737b0c3847b9baf86c7311dcb959db8599f75e20796e9bbacab6f6f14bdcaa61fcff0db7e03627ca2d3283280c108d6bd38cc78a98255dec3b18dfe1bd7f3d0c290596b23723e1a12548cbc1fdd6c25d9a736f49a83f88c6399790a8300cf8f0d41ac2132f0d74116ffefe2ba9e3c32604a9e5f66171c4f4b34f8c8b38ae32b617e367dca849bd749760a421c6a9bb861e0267653e2ec3d4f3c830f6ec081676c2523de4341da094951c0d5b68f11dc4f93c2b3a3ce1e78130ce566ca7bb019eecc09bfca592bc7265e3f07146b73e18891ad89b204b7da8b1cfff9aa678cff1a2d31b90178a9d9bc86402888148e59916d87e756f291d8ddbc2e80d5564b8246638fa71a4ccc5a876170d16f936eb0af87c44fa72c10f44f9b45f2f307640b16e1ef0420673568eed0b3674b601c7fde8d369e1c35383e658dabec8bff5badd02f5a5c26</script>
  <div class="hbe hbe-content">
    <div class="hbe hbe-input hbe-input-wave">
      <input class="hbe hbe-input-field hbe-input-field-wave" type="password" id="hbePass">
      <label class="hbe hbe-input-label hbe-input-label-wave" for="hbePass">
        <span class="hbe hbe-input-label-content hbe-input-label-content-wave">密码不记得，只有本地有</span>
      </label>
      <svg class="hbe hbe-graphic hbe-graphic-wave" width="300%" height="100%" viewBox="0 0 1200 60" preserveAspectRatio="none">
        <path d="M0,56.5c0,0,298.666,0,399.333,0C448.336,56.5,513.994,46,597,46c77.327,0,135,10.5,200.999,10.5c95.996,0,402.001,0,402.001,0"></path>
      </svg>
    </div>
  </div>
</div>
<script data-pjax src="/lib/hbe.js"></script><link href="/css/hbe.style.css" rel="stylesheet" type="text/css">
                                                                    </div>
                                                                    
                                                                        <div class="prev-or-next">
                                                                            <div class="post-foot-next">
                                                                                
                                                                                    <a href="/2022/08/13/2022-8-13-Yara/" target="_self">
                                                                                        <i class="iconfont icon-chevronleft"></i>
                                                                                        <span>Prev</span>
                                                                                    </a>
                                                                                    
                                                                            </div>
                                                                            <div class="post-attach">
                                                                                <!-- <span class="post-pubtime">
              <i class="iconfont icon-updatetime" title="Update time"></i>
              2022-09-21
            </span> -->

                                                                                
                                                                                            <span class="post-categories">
          <!-- <i class="iconfont icon-bookmark" title="Categories"></i> -->
          
          <!-- <span class="span--category">
            <a href="/categories/Technology/" title="Technology">
              <b>#</b> Technology
            </a>
          </span> -->
                                                                                            
                                                                                                </span>
                                                                                                
                                                                                    <span class="post-tags">
          <!-- <i class="iconfont icon-tags" title="Tags"></i> -->
          
          <!-- <span class="span--tag">
            <a href="/tags/Win32/" title="Win32">
              <b>#</b> Win32
            </a>
          </span> -->
                                                                                    
                                                                                        </span>
                                                                                        
                                                                            </div>
                                                                            <div class="post-foot-prev">
                                                                                
                                                                                    <a href="/2022/09/26/2022-9-WinKernel%E4%BF%9D%E6%8A%A4%E6%A8%A1%E5%BC%8F/" target="_self">
                                                                                        <span>Next</span>
                                                                                        <i class="iconfont icon-chevronright"></i>
                                                                                    </a>
                                                                                    
                                                                            </div>
                                                                        </div>
                                                                        
                                                                </div>
                                                                
  <div id="btn-catalog" class="btn-catalog">
    <i class="iconfont icon-catalog"></i>
  </div>
  <div class="post-catalog hidden" id="catalog">
    <div class="title">Contents</div>
    <div class="catalog-content">
      
        <ol class="toc"><li class="toc-item toc-level-1"><a class="toc-link" href="#%E5%9F%BA%E7%A1%80"><span class="toc-text">基础</span></a><ol class="toc-child"><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%8D%95%E4%B8%80%E5%AE%9E%E4%BE%8B"><span class="toc-text">单一实例</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#CreateMutexA"><span class="toc-text">CreateMutexA</span></a></li></ol></li></ol></li><li class="toc-item toc-level-1"><a class="toc-link" href="#%E6%B3%A8%E5%85%A5"><span class="toc-text">注入</span></a><ol class="toc-child"><li class="toc-item toc-level-2"><a class="toc-link" href="#%E5%85%A8%E5%B1%80%E9%92%A9%E5%AD%90"><span class="toc-text">全局钩子</span></a><ol class="toc-child"><li class="toc-item toc-level-3"><a class="toc-link" href="#SetWindowsHookEx"><span class="toc-text">SetWindowsHookEx</span></a></li><li class="toc-item toc-level-3"><a class="toc-link" href="#%E5%AE%9E%E7%8E%B0"><span class="toc-text">实现</span></a></li></ol></li></ol></li></ol>
      
    </div>
  </div>

  
<script src="/js/catalog.js"></script>




                                                                    
                                                                        <div class="comments-container">
                                                                            







                                                                        </div>
                                                                        
                                                            </div>
                                                            
        
<div class="footer">
  <div class="social">
    <ul>
      
        <li>
          <a title="github" target="_blank" rel="noopener" href="https://github.com/Ghostasky">
            <i class="iconfont icon-github"></i>
          </a>
        </li>
      
        <li>
          <a title="twitter" target="_blank" rel="noopener" href="https://twitter.com/ghostasky">
            <i class="iconfont icon-twitter"></i>
          </a>
        </li>
      
    </ul>
  </div>
  
    
    <div class="footer-more">
      
        <a target="_blank" rel="noopener" href="https://github.com/Ghostasky">怕什么真理无穷，进一寸有进一寸的欢喜。</a>
        
    </div>
  
    
    <div class="footer-more">
      
        <a target="_blank" rel="noopener" href="https://github.com/zchengsite/hexo-theme-oranges">Copyright © 2022 Oranges</a>
        
    </div>
  
    
    <div class="footer-more">
      
        <a target="_blank" rel="noopener" href="https://github.com/zchengsite/hexo-theme-oranges">Theme by Oranges | Powered by Hexo</a>
        
    </div>
  
</div>

      </div>

      <div class="tools-bar">
        <div class="back-to-top tools-bar-item hidden">
  <a href="javascript: void(0)">
    <i class="iconfont icon-chevronup"></i>
  </a>
</div>


<script src="/js/backtotop.js"></script>



        
  <div class="search-icon tools-bar-item" id="search-icon">
    <a href="javascript: void(0)">
      <i class="iconfont icon-search"></i>
    </a>
  </div>

  <div class="search-overlay hidden">
    <div class="search-content" tabindex="0">
      <div class="search-title">
        <span class="search-icon-input">
          <a href="javascript: void(0)">
            <i class="iconfont icon-search"></i>
          </a>
        </span>
        
          <input type="text" class="search-input" id="search-input" placeholder="Search...">
        
        <span class="search-close-icon" id="search-close-icon">
          <a href="javascript: void(0)">
            <i class="iconfont icon-close"></i>
          </a>
        </span>
      </div>
      <div class="search-result" id="search-result"></div>
    </div>
  </div>

  <script type="text/javascript">
    var inputArea = document.querySelector("#search-input")
    var searchOverlayArea = document.querySelector(".search-overlay")

    inputArea.onclick = function() {
      getSearchFile()
      this.onclick = null
    }

    inputArea.onkeydown = function() {
      if(event.keyCode == 13)
        return false
    }

    function openOrHideSearchContent() {
      let isHidden = searchOverlayArea.classList.contains('hidden')
      if (isHidden) {
        searchOverlayArea.classList.remove('hidden')
        document.body.classList.add('hidden')
        // inputArea.focus()
      } else {
        searchOverlayArea.classList.add('hidden')
        document.body.classList.remove('hidden')
      }
    }

    function blurSearchContent(e) {
      if (e.target === searchOverlayArea) {
        openOrHideSearchContent()
      }
    }

    document.querySelector("#search-icon").addEventListener("click", openOrHideSearchContent, false)
    document.querySelector("#search-close-icon").addEventListener("click", openOrHideSearchContent, false)
    searchOverlayArea.addEventListener("click", blurSearchContent, false)

    var searchFunc = function (path, search_id, content_id) {
      'use strict';
      var $input = document.getElementById(search_id);
      var $resultContent = document.getElementById(content_id);
      $resultContent.innerHTML = "<ul><span class='local-search-empty'>First search, index file loading, please wait...<span></ul>";
      $.ajax({
        // 0x01. load xml file
        url: path,
        dataType: "xml",
        success: function (xmlResponse) {
          // 0x02. parse xml file
          var datas = $("entry", xmlResponse).map(function () {
            return {
              title: $("title", this).text(),
              content: $("content", this).text(),
              url: $("url", this).text()
            };
          }).get();
          $resultContent.innerHTML = "";

          $input.addEventListener('input', function () {
            // 0x03. parse query to keywords list
            var str = '<ul class=\"search-result-list\">';
            var keywords = this.value.trim().toLowerCase().split(/[\s\-]+/);
            $resultContent.innerHTML = "";
            if (this.value.trim().length <= 0) {
              return;
            }
            // 0x04. perform local searching
            datas.forEach(function (data) {
              var isMatch = true;
              var content_index = [];
              if (!data.title || data.title.trim() === '') {
                data.title = "Untitled";
              }
              var orig_data_title = data.title.trim();
              var data_title = orig_data_title.toLowerCase();
              var orig_data_content = data.content.trim().replace(/<[^>]+>/g, "");
              var data_content = orig_data_content.toLowerCase();
              var data_url = data.url;
              var index_title = -1;
              var index_content = -1;
              var first_occur = -1;
              // only match artiles with not empty contents
              if (data_content !== '') {
                keywords.forEach(function (keyword, i) {
                  index_title = data_title.indexOf(keyword);
                  index_content = data_content.indexOf(keyword);

                  if (index_title < 0 && index_content < 0) {
                    isMatch = false;
                  } else {
                    if (index_content < 0) {
                      index_content = 0;
                    }
                    if (i == 0) {
                      first_occur = index_content;
                    }
                    // content_index.push({index_content:index_content, keyword_len:keyword_len});
                  }
                });
              } else {
                isMatch = false;
              }
              // 0x05. show search results
              if (isMatch) {
                str += "<li><a href='" + data_url + "' class='search-result-title'>" + orig_data_title + "</a>";
                var content = orig_data_content;
                if (first_occur >= 0) {
                  // cut out 100 characters
                  var start = first_occur - 20;
                  var end = first_occur + 80;

                  if (start < 0) {
                    start = 0;
                  }

                  if (start == 0) {
                    end = 100;
                  }

                  if (end > content.length) {
                    end = content.length;
                  }

                  var match_content = content.substr(start, end);

                  // highlight all keywords
                  keywords.forEach(function (keyword) {
                    var regS = new RegExp(keyword, "gi");
                    match_content = match_content.replace(regS, "<span class=\"search-keyword\">" + keyword + "</span>");
                  });

                  str += "<p class=\"search-result-abstract\">" + match_content + "...</p>"
                }
                str += "</li>";
              }
            });
            str += "</ul>";
            if (str.indexOf('<li>') === -1) {
              return $resultContent.innerHTML = "<ul><span class='local-search-empty'>No result<span></ul>";
            }
            $resultContent.innerHTML = str;
          });
        },
        error: function(xhr, status, error) {
          $resultContent.innerHTML = ""
          if (xhr.status === 404) {
            $resultContent.innerHTML = "<ul><span class='local-search-empty'>The search.xml file was not found, please refer to：<a href='https://github.com/zchengsite/hexo-theme-oranges#configuration' target='_black'>configuration</a><span></ul>";
          } else {
            $resultContent.innerHTML = "<ul><span class='local-search-empty'>The request failed, Try to refresh the page or try again later.<span></ul>";
          }
        }
      });
      $(document).on('click', '#search-close-icon', function() {
        $('#search-input').val('');
        $('#search-result').html('');
      });
    }

    var getSearchFile = function() {
        var path = "/search.xml";
        searchFunc(path, 'search-input', 'search-result');
    }
  </script>




        
  <div class="tools-bar-item theme-icon" id="switch-color-scheme">
    <a href="javascript: void(0)">
      <i id="theme-icon" class="iconfont icon-moon"></i>
    </a>
  </div>

  
<script src="/js/colorscheme.js"></script>





        
  
    <div class="share-icon tools-bar-item">
      <a href="javascript: void(0)" id="share-icon">
        <i class="iconfont iconshare"></i>
      </a>
      <div class="share-content hidden">
        
          <a class="share-item" href="https://twitter.com/intent/tweet?text=' + Windows%20Program%20Learn_0x1 + '&url=' + https%3A%2F%2Fghostasky.github.io%2F2022%2F09%2F21%2F2022-9-WinCode1%2F + '" target="_blank" title="Twitter">
            <i class="iconfont icon-twitter"></i>
          </a>
        
        
          <a class="share-item" href="https://www.facebook.com/sharer.php?u=https://ghostasky.github.io/2022/09/21/2022-9-WinCode1/" target="_blank" title="Facebook">
            <i class="iconfont icon-facebooksquare"></i>
          </a>
        
      </div>
    </div>
  
  
<script src="/js/shares.js"></script>



      </div>
    </div>
  </body>
</html>
